{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.path.append(\"../../\")\n",
    "from mymodel.Show import show\n",
    "import torch\n",
    "import matplotlib.pyplot as plt\n",
    "import torchvision\n",
    "from torchvision import transforms\n",
    "from torch import nn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 以fashion数据集为例\n",
    "n_inputs, n_outputs, n_hiddens1, n_hiddens2 = 784, 10, 256, 256"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "mnist_train = torchvision.datasets.FashionMNIST(\n",
    "    root=\"../../data\", train=True, transform=transforms.ToTensor(), download=False)\n",
    "mnist_test = torchvision.datasets.FashionMNIST(\n",
    "    root=\"../../data\", train=False, transform=transforms.ToTensor(), download=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.utils\n",
    "import torch.utils.data\n",
    "num_epochs, lr, batch_size = 10, 0.5, 256\n",
    "loss = nn.CrossEntropyLoss()\n",
    "train_iter = torch.utils.data.DataLoader(mnist_train,batch_size,shuffle=True)\n",
    "test_iter = torch.utils.data.DataLoader(mnist_test,batch_size,shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "net = nn.Sequential(nn.Flatten(),\n",
    "                    nn.Linear(n_inputs,n_hiddens1),\n",
    "                    nn.ReLU(),\n",
    "                    # 添加dropout层\n",
    "                    nn.Dropout(0.2),\n",
    "                    nn.Linear(n_hiddens1,n_hiddens2),\n",
    "                    nn.ReLU(),\n",
    "                    nn.Dropout(0.5),\n",
    "                    nn.Linear(n_hiddens2,n_outputs)\n",
    ")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "optim = torch.optim.SGD(net.parameters(),lr=lr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import IPython\n",
    "import IPython.display\n",
    "epochs = 20\n",
    "myshow = show([\"train loss\",\"train acc\",\"test acc\"],\"epoch\",\"loss/acc\",ylim=[0,1])\n",
    "def train():\n",
    "    for epoch in range(epochs):\n",
    "        for x,y in train_iter:\n",
    "            y_hat = net(x)\n",
    "            l = loss(y_hat, y)\n",
    "            optim.zero_grad()\n",
    "            l.backward()\n",
    "            optim.step()\n",
    "        with torch.no_grad():\n",
    "            IPython.display.clear_output(wait=True)\n",
    "            myshow.add([myshow.eval_loss(loss,net,train_iter,batch_size),\n",
    "                       \n",
    "                        myshow.eval_acc(net,train_iter),\n",
    "                        myshow.eval_acc(net,test_iter)])\n",
    "            myshow.show_train()\n",
    "    myshow.clear()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:0.0009000205900520086\n"
     ]
    },
    {
     "data": {
      "image/png": "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yiKdjbkhIiIiKg4MN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKQw3REREJCkMN0RERCQpDDdEREQkKToPNytWrICTkxNMTEzg4eGBM2fO5Ll9XFwcRo4cCXt7exgbG6NOnTo4cOBACVVLREREpZ2BLt9827Zt8PPzw+rVq+Hh4YHFixfD29sbN2/ehI2NTbbt09LS0KFDB9jY2GDHjh2oWrUq7t+/Dysrq5IvnoiIiEolnYabRYsWYdiwYRgyZAgAYPXq1di/fz/Wr1+PSZMmZdt+/fr1ePHiBUJDQ2FoaAgAcHJyKsmSiYiIqJTTWbhJS0vD+fPnMXnyZPU6uVwOLy8vhIWF5fiaffv2wdPTEyNHjsTevXtRuXJlDBgwABMnToRCocjxNampqUhNTVU/jo+PBwAolUoolUottqh0yWiblNuYlT61l22VLn1qL9sqXcXV3sLsTyYIgqDVdy+gx48fo2rVqggNDYWnp6d6/YQJE3D8+HGcPn0622vq1auHyMhIDBw4ECNGjMCdO3cwYsQIfPPNN5g5c2aO7zNr1iz4+/tnW79lyxaYmZlpr0FERERUbJKTkzFgwAC8evUKlpaWeW6r09NShaVSqWBjY4NffvkFCoUCTZs2xaNHj/Djjz/mGm4mT54MPz8/9eP4+Hg4ODigY8eO+f5wyjKlUokj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fv75Z1hYWGjUMXXqVCxcuBDnzp2DgYEBPv/88xJpPxFpF2+cSUQ6lZqaiooVK+Lo0aPw9PRUrx86dCiSk5MxfPhwtG3bFlu3bkXfvn0BAC9evEC1atWwceNG9OnTBwMHDsTTp09x+PBh9esnTJiA/fv349q1a7h16xbq1q2LI0eOwMvLK1sNwcHBaNu2LY4ePYr27dsDAA4cOICPP/4YKSkpMDExKeafAhFpE3tuiEin7ty5g+TkZHTo0AEWFhbqZfPmzbh79656u6zBp2LFiqhbty5u3LgBALhx4wZatmypsd+WLVvi9u3bSE9PR3h4OBQKBdq0aZNnLa6ururv7e3tAQCxsbHv3EYiKlkGui6AiPRbYmIiAGD//v2oWrWqxnPGxsYaAaeoTE1NC7SdoaGh+nuZTAZAHA9ERGULe26ISKcaNGgAY2NjREVFoVatWhqLg4ODert///1X/f3Lly9x69Yt1K9fHwBQv359hISEaOw3JCQEderUgUKhgIuLC1QqlcYYHiKSLvbcEJFOlStXDuPHj8fYsWOhUqnQqlUrvHr1CiEhIbC0tET16tUBALNnz4a1tTVsbW0xdepUVKpUCT4+PgCAcePGoVmzZpgzZw769u2LsLAwLF++HCtXrgQAODk5YfDgwfj888+xdOlSuLm54f79+4iNjUWfPn101XQiKiYMN0Skc3PmzEHlypUREBCAe/fuwcrKCu+99x6mTJmiPi00f/58jB49Grdv30bjxo3x119/wcjICADw3nvv4c8//8SMGTMwZ84c2NvbY/bs2fD19VW/x6pVqzBlyhSMGDECz58/h6OjI6ZMmaKL5hJRMePVUkRUqmVcyfTy5UtYWVnpuhwiKgM45oaIiIgkheGGiIiIJIWnpYiIiEhS2HNDREREksJwQ0RERJLCcENERESSwnBDREREksJwQ0RERJLCcENERESSwnBDREREksJwQ0RERJLCcENERESS8n/553hyZP5MxAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
